package importing;
import java.util.*;
import java.io.*;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;

public class importPersonplanXML {

   
    private ArrayList<ArrayList<String>> faecher;
    private ArrayList klassen;
    private ArrayList klassenLehrer;
    private ArrayList lehrer;
    private ArrayList halb1WochenStunden;
    private ArrayList halb2WochenStunden;
    private ArrayList halb1Stunden;
    private ArrayList halb2Stunden;
    private static String datei  = "src/daten/personplanv2.xml";

    public importPersonplanXML(){
        faecher = new ArrayList<ArrayList<String>>();
        klassen = new ArrayList();
        klassenLehrer = new ArrayList();
        lehrer = new ArrayList();
        halb1WochenStunden = new ArrayList();
        halb2WochenStunden = new ArrayList();
        halb1Stunden = new ArrayList();
        halb2Stunden = new ArrayList();
    }
    
    /**
     * Prueft die Datei ob sie Validitert werden kann.
     * @param file
     * @return
     */
    private Document pruefeDatei(String file){
        Document doc;
        try {            
            SAXBuilder sax = new SAXBuilder();
            sax.setValidation(true);
            doc = sax.build(file);
            return doc;
        } catch(IOException e){
            System.err.println("Datei wurde nicht gefunden: ");
            System.err.println(e.getMessage());
            return null;
        }catch(JDOMException e) {
            System.err.println("JDOM hat einen Fehler festegestellt: ");
            System.err.println(e.getMessage());
            return null;
        }      
    }


    /**
     * Liest die XML Datei ein.
     * @param XML - Datei
     */

    public boolean leseXML(String file){
        Element unterfach;
        Element lehrkraft;
        Element halbJahr1;
        Element halbJahr2;
        Element unterKlasse;
        List klasse;
      
        if(pruefeDatei(file) == null){
            return false;
        }
            Document doc = pruefeDatei(file);
            Element root = doc.getRootElement();
            List fach = root.getChildren("FACH");
            for(int i = 0;i<fach.size();i++) {
                // Holt sich die Elemente aus "FACH"
                unterfach = (Element) fach.get(i);
                // Holt sich die Elemente aus "KLASSE"
                klasse = unterfach.getChildren("KLASSE");

                faecher.add(i,new ArrayList<String>());
                faecher.get(i).add(unterfach
                        .getAttribute("FACH")
                            .getValue());                
                for(int j = 0;j<klasse.size();j++) {
                    unterKlasse = (Element) klasse.get(j);
                    klassenLehrer.add(j,unterKlasse
                                .getAttribute("KlassenLehrer")
                                    .getValue());
                    klassen.add(j,unterKlasse
                            .getAttribute("KlassenName")
                                .getValue());
                    lehrkraft = unterKlasse
                            .getChild("LEHRER");
                    halbJahr1 = unterKlasse
                            .getChild("HALBJAHR1");
                    halbJahr2 = unterKlasse
                            .getChild("HALBJAHR2");
                    faecher.get(i).add(j,new String());
                    faecher.get(i).add(j,lehrkraft
                            .getText());
                    halb1WochenStunden.add(j,halbJahr1
                            .getAttribute("WochenstundenKlasse")
                                .getValue());
                    halb1Stunden.add(j,halbJahr1
                            .getAttribute("Stunden")
                                .getValue());
                    halb2WochenStunden.add(j,halbJahr1
                            .getAttribute("WochenstundenKlasse")
                                .getValue());
                    halb2Stunden.add(j,halbJahr2
                            .getAttribute("Stunden")
                                .getValue());
                }
            }
//
//            System.out.println("Fächer: "+faecher);
//            System.out.println("KlassenLehrer: "+klassenLehrer);
//            System.out.println("Klassen: "+klassen);
//            System.out.println("Lehrer: "+lehrer);
//            System.out.println("1 Halbjahr Wochenstunden: "+halb1WochenStunden);
//            System.out.println("2 Halbjahr Wochenstunden: "+halb2WochenStunden);
//            System.out.println("1 Halbjahr stunden: "+halb1Stunden);
//            System.out.println("2 Halbjahr stunden: "+halb2Stunden);


        return true;
    }

    /**
     * Gibt die ArrayList faecher zurück
     * @return
     */
    public ArrayList<ArrayList<String>> getFaecher() {
        return faecher;
    }

    /**
     * Gibt die ArrayList klassenLehrer zurück
     * @return
     */
    public ArrayList getKlassenLehrer() {
        return klassenLehrer;
    }

    /**
     * Gibt die ArrayList klassen zurück
     * @return
     */
    public ArrayList getKlassen() {
        return klassen;
    }

    /**
     * Gibt die ArrayList lehrer zurück
     * @return
     */
    public ArrayList getLehrer() {
        return lehrer;
    }

    /**
     * Gibt die ArrayList halb1WochenStunden zurück
     * @return
     */
    public ArrayList getHalb1Wochen() {
        return halb1WochenStunden;
    }

    /**
     * Gibt die ArrayList halb2WochenStunden zurück
     * @return
     */
    public ArrayList getHalb2Wochen() {
        return halb2WochenStunden;
    }

    /**
     * Gibt die ArrayList halb1Stunden zurück
     * @return
     */
    public ArrayList getHalb1Stunden() {
        return halb1Stunden;
    }

    /**
     * Gibt die ArrayList halb2Stunden zurück
     * @return
     */
    public ArrayList getHalb2Stunden() {
        return halb2Stunden;
    }
}
